const util = require("@/common/util.js");
/**
 * 时间：2021年1月13日
 * 不带header的请求
 * editor: yj
 */
const baseRequest = (opts, data) => {
    let baseDefaultOpts = {
        url: opts.url,
        // 请求接口地址
        data: JSON.stringify(data),
        // 传入请求参数
        method: opts.method,
        // 配置请求类型
        header: opts.method == 'get' ? { 'X-Requested-With': 'XMLHttpRequest', "Accept": "application/json", "Content-Type": "application/json; charset=UTF-8" } : { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
        // 配置请求头
        dataType: 'json',
    }
    let promise = new Promise(function(resolve, reject) {
        uni.request(baseDefaultOpts).then(
            (res) => {
                //console.log(JSON.stringify(res[1].data))
                if (res[1].data.result != undefined) {
                    if (res[1].data.result.status == 'success') {
                        // 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值（以项目实际情况为准）
                        resolve(res[1].data.result.data)
                    } else if (res[1].data.result.status == 'failed') {
                        uni.showToast({ icon: 'none', title: res[1].data.result.data.message, duration: 2000 });
                        reject(res[1].data.result.data)
                        return false
                    } else {
                        uni.showToast({ icon: 'none', title: res[1].data.result.data.message, duration: 2000 });
                        return false
                    }
                } else if (res[1].data.error != undefined) {
                    reject(res[1].data.error)
                }
            }
        ).catch(
            (response) => {
                reject(response)
            }
        )
    })
    return promise
};
/**
 * 时间：2021年1月13日
 * 带header的请求
 * editor: yj
 * opts:配置参数
 * data：传入数据
 * state: 状态，记次数
 * callback: 回调
 */
const TokenRequest = (opts, data, state, callback) => {
    let zxsh_token = "";
    zxsh_token = uni.getStorageSync('zxsh_token')
        //此token是登录成功后后台返回保存在storage中的
    let DefaultOpts = {
            url: opts.url,
            data: JSON.stringify(data),
            method: opts.method,
            header: opts.method == 'get' ? { 'token': zxsh_token, 'X-Requested-With': 'XMLHttpRequest', "Accept": "application/json", "Content-Type": "application/json; charset=UTF-8" } : { 'token': zxsh_token, 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' },
            dataType: 'json',
        }
        //console.log(zxsh_token)
    let promise = new Promise(function(resolve, reject) {
        uni.request(DefaultOpts).then((res) => {
            console.log(JSON.stringify(res[1].data))
            if (res[1].data.result.status == 'success') {
                // 后端返回的状态码100为成功状态,成功则返回请求结果,在app调试时可以通过console.log(JSON.stringify(res[1].data))来查看返回值（以项目实际情况为准）
                resolve(res[1].data.result.data)
            } else if (res[1].data.result.status == 'failed') {
                uni.showToast({ icon: 'none', title: res[1].data.result.data.message, duration: 2000 })
                return false
            } else if (res[1].data.result.status == 'denied') {
                // reject(res[1].data.result)
                //token过期
                let param2 = {
                    id: 2,
                    method: "getAccessToken",
                    params: {
                        "appId": "XsHTX9UerzAUneE7",
                        "appkey": "yVBkQMaNC7lVsxvsoKmi0Y0wTihNeGpa"
                    }
                };
                if (util.isEmpty(state)) {
                    baseRequest(opts, param2).then((ress) => {
                        //console.log(JSON.stringify(ress))
                        if (!util.isEmpty(ress)) {
                            uni.setStorageSync('zxsh_token', ress.accessToken)
                            if (util.isEmpty(state)) {
                                state = 1
                                callback('', state++)
                            }
                        } else {
                            uni.showToast({ title: "token获取异常", icon: 'none' })
                        }
                    }, (error) => {
                        uni.showToast({ title: error, icon: 'none' })
                    })
                } else {
                    if (state > 2) {
                        uni.showToast({ title: "token失效，请稍后在试", icon: 'none' })
                        return;
                    }
                    state = state + 1
                    callback('', state)
                }
            } else {
                uni.showToast({ icon: 'none', title: '服务器正在维护，请稍后在试', duration: 2000 });
                return false
            }
        }).catch(
            (response) => {
                reject(response)
            }
        )
    })
    return promise
}

// 将对象导出外部引入使用
module.exports = {
    baseRequest,
    TokenRequest
}